package com.zzyl.nursing.domain;

import java.time.LocalDate;
import java.time.LocalDateTime;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import com.zzyl.common.annotation.Excel;
import com.zzyl.common.core.domain.BaseEntity;

/**
 * 文物出借管理，用于跟踪和管理文物的出借情况对象 artifact_loan
 *
 * @author success
 * @date 2025-03-21
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("文物出借管理，用于跟踪和管理文物的出借情况实体")
public class ArtifactLoan extends BaseEntity {
    private static final long serialVersionUID = 1L;

    // 出借记录ID，主键自增
    @Excel(name = "出借记录ID，主键自增")
    @ApiModelProperty("出借记录ID，主键自增")
    private Integer loanId;

    // 文物ID，关联到具体的文物记录
    @Excel(name = "文物ID，关联到具体的文物记录")
    @ApiModelProperty("文物ID，关联到具体的文物记录")
    private String artifactId;

    // 借用人姓名
    @Excel(name = "借用人姓名")
    @ApiModelProperty("借用人姓名")
    private String borrowerName;

    // 借用人的机构或组织（可选）
    @Excel(name = "借用人的机构或组织", readConverterExp = "可=选")
    @ApiModelProperty("借用人的机构或组织（可选）")
    private String borrowerInstitution;

    // 出借日期
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "出借日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("出借日期")
    private LocalDateTime loanDate;

    // 预计归还日期
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "预计归还日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("预计归还日期")
    private LocalDate expectedReturnDate;

    // 实际归还日期（出借时未知，因此可以为空）
    @Excel(name = "实际归还日期", readConverterExp = "出=借时未知，因此可以为空")
    @ApiModelProperty("实际归还日期（出借时未知，因此可以为空）")
    private LocalDateTime actualReturnDate;

    // 出借状态，默认为申请中
    @Excel(name = "出借状态，默认为申请中")
    @ApiModelProperty("出借状态，默认为申请中")
    private String loanStatus;

    // 备注信息（如特殊保管要求等）
    @Excel(name = "备注信息", readConverterExp = "如=特殊保管要求等")
    @ApiModelProperty("备注信息（如特殊保管要求等）")
    private String notes;

}
